Data communication in a laboratory environment

ABSTRACT

A system for controlling the operation a one or more crystallography laboratory comprises a user interface coupled to an input device. The laboratories each house test samples and include imaging devices and automated machinery configured to retrieve specific samples for imaging. A controller is configured to receive scheduling information from the user interface indicating one or more samples to be imaged and one or more times to image the samples, wherein the controller communicates the scheduling information to each laboratory housing at least one of the test samples to be imaged. The laboratory devices may communicate asynchronously via a server configured to receive messages, determine process(es) to be executed based on the type of the received message, the source of the message, and/or the destination of the message. A transmit message may then be generated, through execution of the process(es), and transmitted to the determined destination device when available.

RELATED APPLICATIONS

[0001] This application claims priority to U.S. Provisional Patent Application No. 60/444,519, titled “AUTOMATED SAMPLE ANALYSIS SYSTEM AND METHOD,” filed on Jan. 31, 2003, having attorney Docket Number DPINTL.012PR, Provisional Patent Application No. 60/444,585, titled “REMOTE CONTROL OF AUTOMATED LABS,” filed on Jan. 31, 2003, having attorney Docket Number DPINTL.014PR, U.S. Provisional Patent Application No. 60/444,586, titled “AUTOMATED IMAGING SYSTEM AND METHOD,” filed on Jan. 31, 2003, having attorney Docket Number DPINTL.013PR and Provisional Patent Application No. 60/474,989, titled “IMAGE ANALYSIS SYSTEM AND METHOD,” filed on May 30, 2003, having attorney Docket Number DPINTL.015PR, each of which is hereby incorporated by reference for all purposes.

BACKGROUND OF THE INVENTION

[0002] 1. Field of the Invention

[0003] The invention is generally related to devices and methods for capturing and analyzing images of objects in a field of view. More particularly, the invention is directed to an imaging system and related methods for automating the detection and analysis of substances in samples using imaging techniques.

[0004] 2. Description of the Related Art

[0005] Modern chemistry and biology laboratories produce and analyze multiple samples concurrently in order to accelerate the development cycle. The samples are often produced and stored in a sample storage container, such as the individual wells in a multi-well plate. Alternatively, drops of multiple samples are placed at discrete locations on a plate, without the need for wells to contain the sample. In either case, hundreds, thousands, or more, different sample drops may be placed on a single analysis plate. Similarly, a single laboratory may house thousands, millions, or more, samples on plates for analysis. Thus, the number of drops to monitor and analyze may be extremely large.

[0006] In a conventional laboratory, a technician manually locates and removes each plate or sample storage receptacle from a storage location and views each sample well under a microscope to determine if the desired biological changes have occurred. In most cases, the plates are stored in laboratories within a controlled environment. For example, in protein crystallization analysis, samples are often incubated for long periods of time at controlled temperatures to induce production of crystals. Thus, the technician must locate, remove, and view the samples under a microscope in a refrigerated room. Further increasing the demand for technician labor, hundreds or thousands of samples in sample wells may need to be periodically viewed or otherwise analyzed to determine the existence of crystals in a sample well.

[0007] Therefore, a laboratory that automates the process of plate location and recovery is desired. Automation of the analysis process is also desired. In particular, a laboratory that acquires images of selected plates for review by technicians outside the controlled atmosphere of the laboratory is desired. Finally, a system that allows technicians to view, monitor, and schedule the operations of multiple remote laboratories from any computer with an internet connection is desired.

SUMMARY OF THE INVENTION

[0008] The inventive systems and methods disclosed here have several aspects, no single one of which is solely responsible for the desirable attributes of the systems and methods. Without limiting the scope of the invention as expressed by the claims which follow, its more prominent features will now be discussed briefly.

[0009] In general terms, the invention concerns an imaging system and related methods for automating the task of monitoring crystallization of samples for use in crystallographic analysis. A “crystal farm” as the term is used herein, refers generally to a laboratory that includes equipment and machinery useful in promoting crystallization of samples. In one embodiment, an imaging system is part of an automated sample analysis system for incubating and analyzing multiple samples for, e.g., protein crystallization. A temperature controlled cabinet houses sample storage, transport, and imaging systems. The system is automated and can be controlled by software that is executed remote to the cabinet. The system can include an array of storage shelves having multiple shelf columns arranged around a core. Each shelf can store a multi-well plate. The core houses a sample transport system that includes a multi-axis robot that rotates about a vertical axis to access the shelves in the shelf array. The transport system retrieves and replaces the multi-well plates in the shelves and can move plates from the shelves to the imaging system where each sample can be automatically imaged.

[0010] According to one aspect of the present invention, a user interface schedules the operations of hardware devices at a number of crystal farms and allows the technician to remotely view, score, and setup additional experiments via a web based user interface. Various pages and options within the user interface may be navigated through the use of any input device available, such as a keyboard, mouse, or touchscreen, for example. Each of the crystal farms is coupled to a master controller, which stores scheduling information for each of the crystal farms. The master controller may be located at one of the crystal farms or may be a stand alone computer connected to the network of crystal farms. The master controller is also coupled to any number of user interfaces, operated by technicians, in order to receive updates to schedules for the crystal farms.

[0011] The primary task being automated is the imaging of drops in a plate at a technician-defined frequency. Once plates, drops, and imaging frequencies are defined, the master controller schedule manager balances throughput optimization with task prioritization for the hundreds of plates (thousands of drops) at each of the crystal farms, and communicates relevant portions of the master schedule to a local scheduler at each of the crystal farms. Thus, any changes to the schedule for a particular plate or drop are re-factored by the master controller schedule manager and continuously communicated to the individual crystal farms.

[0012] As images are being captured, a user interface enables multiple technicians, each at remote locations, to quickly locate and view the digital images, to add notes, modify the imaging schedule, or link to related images. The user interface provides an easy to use, intuitive web portal for the technician to manage multiple project workloads, including analyzing drop images and identifying crystals growing at any of the crystal farms.

BRIEF DESCRIPTION OF THE DRAWINGS

[0013]FIG. 1 is a block diagram illustrating three automated labs controlled by a remote user interface via a web server.

[0014]FIG. 2 illustrates multiple user interfaces accessing management information for multiple crystal farms via the internet.

[0015]FIG. 3 is a block diagram illustrating components of a crystal farm.

[0016]FIG. 4 is a block diagram illustrating functional modules of the web server application.

[0017]FIG. 5A is a block diagram illustrating functional modules within the system administration module.

[0018]FIG. 5B illustrates an exemplary user interface page for creating and editing schedule and shot profiles.

[0019]FIG. 5C illustrates an exemplary user interface 150 page displaying data from the crystal farm properties module.

[0020]FIG. 6A is a block diagram illustrating functional modules within the project manager.

[0021]FIG. 6B is a screen shot of one page of the project manager.

[0022]FIG. 7A is a block diagram illustrating functional modules within the schedule manager.

[0023]FIG. 7B is a screen shot of one page of the schedule manager.

[0024]FIG. 8A is a block diagram illustrating functional modules within the plate handler module.

[0025]FIG. 8B is a screen shot of one page of the plate handler module 450 that allows the addition and/or assignment of plates.

[0026]FIG. 9A is a block diagram illustrating functional modules within the image viewer.

[0027]FIG. 9B is a screen shot of one page of the image viewer that allows querying of drops available for scoring.

[0028]FIG. 9C is a screen shot of one page of an exemplary image module that allows viewing of enlarged images on drops.

[0029]FIG. 9D is a screen shot of one page of another embodiment of the image module.

[0030]FIG. 10A is a block diagram illustrating functional modules within the result analyzer 460.

[0031]FIG. 10B is a screen shot of one page of an exemplary query builder, a charting module, and a chart.

[0032]FIG. 11 is a block diagram illustrating one embodiment of a messaging system for communicating instructions and data between devices coupled to a server.

[0033]FIG. 12 is a flow chart illustrating a method for transmitting messages among devices via an asynchronous messaging server.

DETAILED DESCRIPTION

[0034] In the following description, reference is made to the accompanying drawings, which form a part hereof, and which show, by way of illustration, specific examples or processes in which the invention may be practiced. Where possible, the same reference numbers are used throughout the drawings to refer to the same or like components. In some instances, numerous specific details are set forth in order to provide a thorough understanding of the invention. The invention, however, may be practiced without the specific details or with certain alternative equivalent devices and/or components and methods to those described herein. In other instances, well-known methods and devices and/or components have not been described in detail so as not to unnecessarily obscure aspects of the invention.

[0035]FIG. 1 is a block diagram illustrating three automated labs 110 controlled by a remote user interface 150 via a web server 120. The labs 110 may be any type of lab comprising automated equipment. Each of the labs 110 is operatively coupled to a web server running a web server application 130. In one embodiment, the labs 110 are coupled to the web server 120 via a LAN or other small network topology. In an advantageous embodiment, the labs 110 are each connected to the internet, via a cable or DSL modem, or fiber channel, for example. Likewise, the web server 120 is connected to the internet, via an internet backbone, for example, so that the labs 110 and web server 120 communicate via the internet. In this embodiment, the physical location of the labs 110 and the web server 120 are not important and, thus, may be located anywhere. For example, the lab 110A may be located in Canada, the lab 110B may be located in France, and the lab 110C may be located in Mexico, while the web server 120 is located in the United States.

[0036] The web server 120 is operatively coupled to a PC 140 running the user interface 150 so that the user interface 150 may execute the web server application 130. Similar to the connection of the labs 110 to the web server 120 discussed above, the technician PC 140 may be coupled to the web server via a LAN or small network topology, but is advantageously coupled to the web server 120 via the internet. The user interface 150 communicates with the web server application 130 in order to manage and control the operations of the labs 110. Control of the web server application 130 by the user interface 150 is discussed in detail with reference to FIGS. 4-9.

[0037] In an advantageous embodiment, the web server application 130 is configured so that any number of labs 110 may communicate and receive instructions from the web server application 130. Additionally, the web server application 130 is configured to communicate with any number of user interface's 150. Thus, a number of lab technicians, each remotely located, may monitor and control the operations of a number of remotely located labs 110. Also, each lab 110 may have different quantities and types of automated equipment that is controllable by the web server application 130 and each lab technician, or other technician having rights to access the web server application 130, may have varying permissions to access and control operations of the labs 110.

[0038]FIG. 2 illustrates multiple crystal farms 230, a master controller 250, and multiple technician PC's 140 communicating via the network 240. The labs 110 in FIG. 2 are crystal farms 230. A “crystal farm,” as used herein, refers to a laboratory with controllable environmental conditions (e.g. temperature and humidity) that houses a number of protein drops for which crystallization is desired. The crystal farms 230 discussed herein further comprise automated equipment that allows a technician to monitor and control the operations of the crystal farm 230 remotely. The functions of the crystal farm 230 will be discussed in greater detail with reference to FIG. 3.

[0039] In the embodiment of FIG. 2, a master controller 250 comprises a server executing the web server 120 and the web server application 130. The web server 120 may execute any type of web server software, such as those developed by the Apache Group (Tomcat), Netscape, or Microsoft. The network 240 may be any type of network, such as a Local Area Networks (LAN) or a Wide Area Networks (WAN), or any combination of different networks. The network 240 may also comprise the internet, which includes variations such as the public internet, a private internet, a secure internet, a private network, a public network, a value-added network, or an intranet. Thus, the master controller may contain scheduling and imaging data for the drops and plates within the master controller 250, as well as scheduling and imaging data for drops and plates at each of the crystal farms 230.

[0040] In the embodiment of FIG. 2, three technician PC's 140 each access the web server application 130 executing on the web server 120 via the network 240. Likewise, each of the crystal farms 230 communicate with the web server application 130 (executing on the web server 120) via the internet. Because all communications between the crystal farms 230, the web server 120, and the technician PC's 140 are via the internet, the physical location of the crystal farms 230, the web server 120, and the technician PC's 140 are not important and the devices may be located anywhere.

[0041] In an advantageous embodiment, the web server application 130 (running on the web server 120) is located at the master controller 250 and serves as an intermediary for all communications between the technician PC's 140 and the crystal farms 230. As such, the master controller 250 comprises databases storing information regarding each of the crystal farms 230 and each of the technician PC's 140. In one embodiment, the master controller 250 maintains a master list of all plates and drops at each of the crystal farms 230. However, the physical location of each of the plates is not necessarily important to the technician operating the user interface 150 at a technician PC 140. A particular technician PC 140, such as technician PC 140A, may control the operations of plates located at several different crystal farms 230, such as crystal farms 230A, 230B, and 230C, without ever knowing, or caring about, the physical locations of each plate. Thus, the master controller 250 may store the locations of each of the plates in the crystal farms 230, but make available all of the plates at all of the crystal farms 230 cumulatively. Therefore, the technician accessing a list of plates from the master controller 250 is not required to track, or even know, the physical location of any particular plate. Additionally, the efficiency of a crystallographer (a specific type of technician), viewing the progress of crystal formation of drops, may be greatly increased because of the availability of plates from a number of different crystal farms 230.

[0042] The user interface 150 may be any type and format of graphical user interface and the user interface 150 may communicate with the web server application using any available communication protocol. In one embodiment, the user interface 150 is downloaded from the web server application 130 via the network 240 and presented to the technician through a web browser, such as Microsoft Internet Explorer. In another embodiment, the user interface 150 is a stand-alone program installed on the technician PC's 140 that transmits and receives data from the web server application 130. In yet another embodiment, the web server application 130 is executed at the master controller 250, but controlled by the technician PC 140 via a thin client user interface 150. The use of any other networking technologies known in the art is also contemplated.

[0043] In one embodiment, the web server 120 comprises a computer that enables the web server 120 to communicate with the technician PC's 140. The computer may be a general purpose computer using one or more microprocessors, such as, for example, a Pentium® processor, a Pentium II® processor, a Pentium Pro® processor, a Pentium IV® processor, an x86 processor, an 8051 processor, a MIPS processor, a Power PC® processor, a SPARC® processor, an Alpha® processor, and so forth.

[0044] The technician PC's 140 each comprise an electronic data processing device. For example, a technician PC 140 may be a desktop computer, notebook computer, tablet PC, personal digital assistant (PDA's), mobile phone with internet connectivity, or any other device capable of communicating with the web server 120. The processor unit in each of the technician PC's 140 may operate on any available operating system, such as the Microsoft® Windows® 2000, Microsoft® Windows® XP, Microsoft® Windows® CE, Microsoft® Windows® ME, Palm Pilot OS, Apple® MacOS®, Disk Operating System (DOS), UNIX, IRIX, Solaris, SunOS, FreeBSD, Linux®, or IBM® OS/2® operating systems. Additionally, each of the technician PC's 140 may communicate with the network 240 in any known manner and using any know protocol. For example, technician PC 140C comprises a desktop PC connected to the internet via a cable, DSL, or fiber channel, for example. However, technician PC's 140B and 140A are both mobile devices that do not require wired connections to the network 240. Technician PC 140B comprises a notebook computer, table PC, or the like, and may be connected to the network 240 via a wireless router or wireless satellite link. Similarly, technician PC 140A comprises a PDA, mobile phone, or the like, and may be connected to the network 240 via Wireless Application Protocol, for example. Additionally, any number of additional technician PC's 140 may communicate with the web server application 130, and may do so using any type of electronic device and any available communication protocol.

[0045] In the embodiment illustrated in FIG. 2, the technician PC's 140 communicate with multiple crystal farms 230 via the master controller 250. As noted above, crystal farms 230 typically house many plates, which each hold a number of sample drops. Thus, the monitoring and control of each of the drops on the plates may be more efficiently monitored by a system including robotics and digital image equipment that are remotely controllable. In the embodiment of FIG. 2, each of the technician PC's 140 runs the user interface 150 and communicates with the robotics and automated devices within the crystal farm 230 via the master controller 250 and the network 240. In one embodiment, the user interface 150 comprises project management, plate handling, schedule managing, image viewing, and result analyzing controls for each of the labs 110. Each of these functions are described in detail below with respect to FIGS. 4-9. Additionally, other functionality may be implemented in the user interface 150 according to the technologies described herein.

[0046]FIG. 3 is a block diagram illustrating components of a crystal farm 230. The crystal farm 230 comprises a crystal farm controller 340, an imaging system 330, a plate handling system 310, plate storage area 320, a database 365, and environment monitoring and control system 370. As illustrated in FIG. 3, the crystal farm controller 340 communicates with the automated plate handling, imaging, and environment monitoring and control systems 310, 330 and 370. The crystal farm controller 340 also communicates with the master controller 250, which executes the web server application 130, via any type of internet connection. An example of an automated laboratory is discussed in detail in a co-pending provisional patent application titled “AUTOMATED SAMPLE ANALYSIS SYSTEM AND METHOD,” filed concurrently with this application. The above cited application is expressly incorporated by reference for all purposes.

[0047] The term “module” or “functional module,” as used herein, means, but is not limited to, a software or hardware component, or any combination of software and hardware components that perform the described functions of the module. Thus, a module includes one or more functions that are carried out by hardware and/or software. The hardware and/or software providing the functionality for a module may be combined into only one component or may divided among several separate hardware and/or software components.

[0048] In general, the crystal farm controller 340 comprises any type of computing devices, such as a desktop, portable, or hand-held computer or a server. The crystal farm controller 340 executes local scheduler 360 application software that controls the operations of the automated equipment within the crystal farm 230. In a system having multiple crystal farms 230, each of the crystal farms 230 comprises a crystal farm controller 340 and executes a local scheduler 360. In the embodiment of FIG. 3, three general areas of automated equipment are illustrated (plate handling system 310, imaging system 330, and environment monitoring and control 370). However, it is contemplated that any other equipment, devices, and functions may be automated and remotely controlled according to the methods described herein.

[0049] In one embodiment, the plate storage area 320 comprises multiple plate magazines, where each plate magazine is configured to hold multiple plates in a vertical stack. The plate magazines may be either stationary or moveable. When moveable magazines are used each plate may have a latch mechanism to prevent plates from falling out while the magazines are moved. In other embodiments, the plate storage area 320 may be configured in any arrangement, and the plates may be stored in any orientation and in any type of storage compartment.

[0050] The crystal farm 230 comprises an automated plate handling system 310. In general the plate handling system 310 comprises a robotic system that retrieves, moves, and manipulates plates stored in the plate storage area 320 according to instructions from the crystal farm controller 340. In one embodiment, the plate handling system 310 places new plates in assigned storage locations within the plate storage area 320, retrieves plates from the storage area 320 for digital imaging, analysis or removal from the crystal farm 230, and returns plates to their assigned locations in the storage area 320. The robotics may operate in any manner known in the art in order to perform the above mentioned features. In one embodiment, the plate handling system additionally prioritizes the locations of the plates within the plate storage area 320. For example, plates that are imaged most frequently may be relocated to plate magazines that are near the imaging system 330. Likewise, plates that are infrequently accessed may be moved to locations more remote in the imaging system 330 within the plate storage areas 320. This prioritizing function may be controlled by the crystal farm controller 340 or by the master controller 250.

[0051] The imaging system 330 comprising a digital imaging device for obtaining digital photographs of plates retrieved by the plate handling system 310. In an advantageous embodiment, the digital imaging device is controllable by the crystal farm controller 340, so that the imaging device may move, zoom, and adjust image settings based on instructions from the crystal farm controller 340. Additionally, the imaging system 330 may comprise multiple imaging devices, and multiple types of imaging devices.

[0052] The environment monitoring and control system 370 comprises multiple sensors and control devices for monitoring and adjusting the temperature, humidity, and other atmospheric or state conditions. For example, typical components in a crystal farm 230 are a thermometer and refrigeration unit, where the thermometer reports the current temperature to the environment monitoring and control system 370, which, in turn, adjusts the output level of the refrigeration unit, when necessary. The environment monitoring and control system 370 may also sense the opening of an access door to plate magazines in the crystal farm, indicating that plates are going to be added or removed from the crystal farm. The environment monitoring and control system 370 is coupled to the crystal farm controller 340 and system monitor 355 via the peripheral interface 350. Thus, the environment monitoring and control system 370 transmits current conditions to the crystal farm controller 340 and system monitor 355 and receives instructions for adjusting the conditions from the crystal farm controller 340 and system monitor 355.

[0053] The crystal farm controller 340 runs software including a local scheduler 360 and communicates with the automated machinery in the crystal farm via a peripheral interface 350. The peripheral interface 360 comprises a software drivers 362 for communicating with each of the automated devices, e.g. the imaging system 330, the plate handling system 310, and the environment monitoring and control 370. The peripheral interface 360, and related drivers 362, may interface with any type of connector know in the art, such as, serial, parallel, PCI, SCSI, or ethernet interface. For example, in one embodiment the peripheral interface 360 comprises one or more RS-485 interfaces.

[0054] The database 365 stores data project information, drop assignments, schedules for each drop, plate, and project, and other data related to the management of the crystal farms 230. In one embodiment, the database 365 is developed using the Structured Query Language (SQL) so that interoperability with other applications is facilitated. However, the database 365 may be programmed using any other database programming language known in the art. Although the database 365 is illustrated in FIG. 3 as a component separate from the crystal farm controller 340, the database 365 may be stored on a storage device (e.g. a hard drive or optical storage device) within the crystal farm controller 340. The database 365 is coupled to the local scheduler 360 and system monitor 355 within the crystal farm controller 340. Thus, the database 365 may be accessed and edited by the local scheduler 360 and the system monitor 355. The database 365 is also coupled to the master controller 250 so that the database 365 may be accessed and edited by the master controller. Changes to the database 365 by the master controller 250 are viewed by the local scheduler 360 when the database 365 is next accessed by the local scheduler 360. Likewise, changes to the database 365 by the local scheduler 360 may be viewed by the master controller 250 when the database 365 is next accessed by the master controller. Thus, in this embodiment, the database 365 couples the local scheduler 360 and the master controller 250 by maintaining a database that is commonly accessed and edited by both devices.

[0055] The database 365 may be accessed in a number of manners, using a number of different protocols known in the art. For example, in one embodiment the device accessing the database 365 is connected directly to the database 365. In another embodiment, data objects may be transmitted to the database 365 using a remote object technology, such as Java's Enterprise Java Beans (EJB) or Microsoft's DCOM. In yet another embodiment, an asynchronous messaging system, such as Java Message Service (JMS) transmits messages to the database 365. For a discussion of an exemplary messaging system that may be used in a laboratory environment see FIG. 11, below. The use of any combination of the above communication protocols for accessing a single database 365 is also anticipated. For example, the local scheduler 360 may access the database 365 though a direct connection while the master controller 250 uses a message service to access the database 365.

[0056] The local scheduler 360 maintains the schedules for imaging, viewing, and other operations, for the crystal farm 230. As noted above, the schedules for the crystal farm 230 are stored in the database 365 so that current scheduling information may be accessed by the master controller at any time. The local scheduler 360 may also store the results of scheduled activities in the database 365 and receive scheduling changes made by the master controller 250 in the database 365. When the local scheduler 360 receives updated schedule information from the master controller 250 (via the database 365), the local scheduler 360 may make additional changes to the crystal farm 230 schedule stored in the database 365. Because the scheduling information is stored at the crystal farm 230, each of the crystal farms 230 may execute their imaging schedule without a live connection to the master controller 250. Thus, the crystal farms 230 may continue to operate if the master controller 250 goes off line.

[0057] In one embodiment, the master controller 250 communicates with multiple crystal farms 230, maintains a master schedule for the operations within all crystal farms 230, and provides schedule information to the local scheduler 360 at each crystal farm 230. As such, the master controller 250 creates a multi-farm schedule that may be accessed by any of the user interfaces 150. In an advantageous embodiment, the particular plate and plate information for individual crystal farms is transparent in the user interfaces 150. In other words, the user interfaces see the multi-farm schedule stored at the master controller 250 and do not necessarily need to know at which crystal farm 230 each drop of a particular project is stored.

[0058] The system monitor 355 monitors data from the environment monitoring and control module 370, received via the peripheral interface 350, and makes environment adjustments when necessary. The system monitor 355 is coupled to the database 365 so that current environment conditions written to the database by the master controller 250 may be accessed and implemented at the crystal farm 230. In operation, the user interface 150 determines the environmental conditions for the crystal farm 230, and the conditions are transmitted to the master controller 250 and then stored in the database 365. The system monitor 355 monitors (either real-time or periodically) the portion of the database 365 that stores the environmental conditions for the crystal farm. When a change in the conditions is made, the system monitor 355 implements the change via one or more instructions to the environment monitoring and control system 370. In another embodiment, the master controller 250 transmits instructions indicating a change to the environmental conditions of the crystal farm 230 directly to the system monitor 355, bypassing the database. Similarly, in one embodiment the system monitor 355 transmits conditions directly to the master controller rather than, or in addition to, storing the conditions in the database 365.

[0059] The plate handling system 310 may also comprise a module for scanning bar codes on new plates. In an advantageous embodiment, each plate comprises a unique identification marker, such as a bar code. When a door on a plate storage magazine is opened, the environment monitoring and control module 370 detects the opening of the door and reports the opening of the door to the system monitor 355 via the peripheral interface 350. The system monitor 355 then instructs the plate handling system 310, via the peripheral interface, to scan the bar code on the new plate. When the bar code has been scanned, the plate handling system 310 reports the scanned information to the system monitor 355 and the system monitor 355 updates the database 365 with the new plate information. When the database 365 is accessed by the master controller 250, the new plate will be recognized and subsequently displayed in the user interface 150 as an unassigned plate (see FIG. 8 for discussion on assignment of unassigned plates).

[0060] In the embodiment illustrated in FIG. 3, a database synch controller 375 is executed on the master controller 250. The database synch controller 375 accesses the databases 365 at each of the crystal farms 365 and synchronizes each of the databases 365 so that each of the databases 365 contains scheduling information for all of the crystal farms 230 in the system. Thus, each crystal farm may include the same multi-farm schedule that is stored at the master controller 250. Alternatively, the database synch controller 375 may synchronize each database 365 with only the scheduling information from selected crystal farms 230. Thus, each crystal farm 230 may include the scheduling information for one or more other crystal farms 230. The databases 365 that should be synchronized with one another may be set by the technician accessing the web server application 130 via the user interface 150.

[0061]FIG. 4 is a block diagram illustrating functional modules of the web server application 130. In one embodiment, each of the functional modules illustrated in FIG. 4 is executed at the master farm 250 by the web server application 130. The web server application 130 communicates with the user interface 150 to provide information to the technician. In another embodiment, certain of the modules may be executed at one of the crystal farms 230, or alternatively, at another stand alone controller. The look and feel of the user interface 150, and the structure of the user interface 150, may vary from one user interface 150 to another. For example, in one embodiment the user interface 150 executes thin client software that controls the web server application 130. The thin client user interface 150 displays information and options as generated by the web server application 130. Alternatively, the user interface 150 may include a web browser that downloads HTML, XML, or other browser supported protocol, pages from the web server application 130. In another embodiment, the user interface 150 comprises stand alone user interface 150 software installed on the technician PC 140 that communicates with the web server application 130. In any configuration, the user interface 150 is able to access each of the functional modules illustrated in FIG. 4. Any combination of the above-described, or any other, user interfaces 150 may be used by technician PC's 140 in any particular crystal farm system 100.

[0062] In general, the user interface 150 comprises a setup module 405, an image module 430, a schedule manager 450, a plate handler 420, an environment monitoring and control module 470, and a result analyzer 460. The setup module 405 further comprises a system administration module 410 and a project manager module 440. Each of these modules will be discussed in detail below.

[0063] The environment control module 470 communicates with the environment monitoring and control module 370 in the crystal farm 230. More particular, in some embodiments, the environment monitoring and environment control module 370 communicates data regarding the current environment to the environment control module 470. The control module 470 may then determine any appropriate adjustments to the crystal farm environment and transmit these adjustments to the environment monitoring and control module 370. In another embodiment, the environment monitoring and control module 370 in certain labs 110 independently determines necessary adjustments to the lab environment and implements the necessary adjustments. Accordingly, the environment control module 370 may be configured to communicate with only a portion of the labs 110 in communication with the master farm controller 130.

[0064] Selected screen shots from two exemplary versions of the user interface 150 are displayed herein. Because the format of the user interface 150 may vary from user to user, the functionality of the modules will be discussed generally and include references to the exemplary screen shots of the exemplary user interfaces 150.

[0065]FIG. 5 is a block diagram illustrating functional modules within the setup module 405, and more specifically, within the system administration module 410. The system administration module 410 comprises a security 550, add/delete users 560, system configuration 520, add/edit schedule profiles 530, and crystal farm properties 540 modules. Each of these modules will now be discussed in greater detail.

[0066] The security module 550 allows the system administrator to edit access rights of each of the technicians. Access rights for individual technicians, or groups of technicians, may be set or edited, and logon attempts may be monitored. In order for a technician to gain access to the user interface 150, the technician must first be authenticated, by entering a login name and password, for example. Thus, when the system administrator wishes to allow rights to an additional technician, a login name and password must be assigned to the technician. Likewise, when a system administrator wishes to restrict a technician from gaining access to the user interface 150, the technicians name, and authentication information, may be deleted. The access rights to particular crystal farms 230, or to perform certain functions on crystal farms may also be set by the technician setup module 560. In one embodiment, the technician that creates a new project automatically has all access rights to the created project and may assign access rights for the new project to other technicians.

[0067] The technician setup module 560 allows an administrator to add and remove technicians. When a technician is added to the system the administrator may also set up access rights using the security module 550. In one embodiment, when a technician is removed from the system the user name and password are removed from the system.

[0068] The system configuration module 520 allows monitoring and control of all settings and controls that are global in nature. For example, information such as the IP addresses, communication protocols, physical locations, and crystal farm name of each crystal farm 230 may be stored by the system configuration module 520.

[0069] The add/edit profiles module 530 permits authorized technicians to create and edit schedule profiles and image profiles. A schedule profile comprises a pre-loaded list of scheduling criteria that may be applied to a particular drop, job, plate, or project. The technician can choose from a list of profiles when setting up a project, plate, job, or drop schedule. As will be discussed later with reference to FIG. 6, imaging schedules may be very complex. For example, a particular profile may be set up to acquire images every day for the first week, every second day for the following 3 weeks, and then every day thereafter. By creating profiles, or scheduling templates, the technician that actually schedules the imaging (see FIG. 6) may be able to easily select a profile, possibly making minor changes, rather than set up a new schedule for each assigned schedule.

[0070] The add/edit profiles module 530 similarly allows an authorized technician to create and edit image profiles. In one embodiment, an image profile comprises a list of settings for use by the imaging system 330, such as the number of images to be acquired, polarizer selection, zoom level, focus and exposure settings. The image profiles may then be selectable by a technician setting up an imaging schedule. Again, the ability to select from a number of pre-set image profiles, or templates, may further reduce the time required to set up imaging schedules (see FIG. 6). FIG. 5B illustrates an exemplary user interface 150 page for creating and editing schedule and shot profiles. As shown in FIG. 5B, three schedule profiles have already been created and the details of each may be viewed by clicking on a profile name.

[0071] The crystal farm properties module 540 (FIG. 5A) displays, and allows the technician to adjust, information specific to each of the crystal farms 230. For example, the temperature, humidity, plate count, imaging schedule load, drop count, and notes specific to each crystal farm 230 may be accessed via the crystal farm properties module 540. The crystal farm properties module 540 also receives data from user interfaces 150 indicating changes to the crystal farm properties. For example, an authorized technician may change the temperature at a crystal farm 230 by entering a temperature into the user interface 150, where the user interface is in communication with the crystal farm properties module 540. FIG. 5C illustrates an exemplary user interface 150 page displaying data from the crystal farm properties module 540.

[0072]FIG. 6A is a block diagram illustrating functional modules within the project manager 440. The project manager 440 enables a technician to create and manage a project that contains one or more plates to be scheduled, imaged, and analyzed. As noted above, a project is a convenient way to group tasks, statistical data, and prioritize tasks for the schedule manager 450. In one embodiment, each plate must belong to a project, but there is no limit to the number of plates that must be in a project. Advantageously, plates from multiple crystal farms 230 may be in the same project.

[0073] In addition to the identification of a new plate by a bar code, or other, identification number, the project manager 440 also receives detailed drop condition information regarding each of the drops on new plates. For example, the drop condition information may comprise the protein in each drop, the pH of each drop, and location of each drop on the plate. In an advantageous embodiment, the drop condition information is periodically updated as the drop conditions change. Thus, the drop condition information may be tracked over time. In one embodiment, multiple drops may be placed in a single well (on a plate with wells), which may contain a compound in the well reservoir that interacts with all drops in the well. In this embodiment, multiple drops within a single well may be identified and tracked.

[0074] The drop condition information may initially be acquired by the project manager 440 in a number of ways. In one embodiment, a technician may manually enter the drop condition information for the drops on the new plate. In another embodiment, the data may be imported from an external database or computing system, such as a liquid handler that prepares new plates. Alternatively, the technician may provide all of the information for the new plate by inserting a floppy disk containing all of the information into the crystal farm controller 340. In yet another embodiment, the drop condition information may be uploaded to the master controller 250 from the user interface 150, either before or after the new plate has physically been entered in the crystal farm 230. In one embodiment, the drop condition information, including the historical tracking information, for any plates in the system may be exported to another software application at the technician PC 140. Additionally, images, image settings, and scoring for drops may be exported to a file, or advantageously, directly to another software application. For example, the user interface 150 may provide the technician with the option to export the drop condition information and historical images of the drop into a statistical analysis or crystallography software application, such as the Crystal Monitor software, manufactured by Emerald Systems. Thus, the user interface 150 may interface with other software applications, allowing drop condition information, images, scoring, and other information, to be examined by other software applications.

[0075] In one embodiment, an administrator may determine which drop conditions should be tracked and recorded in the drop condition information. Thus, the conditions that are not believed to be important to the crystallization process may not be tracked, and thus, may simplify the correlation analysis process. For example, a correlation analysis on three drop conditions will likely require much less computing power than a correlation analysis on ten drop conditions. In this embodiment, tracked conditions may be added or edited at any time by any technician have sufficient access rights, such as the creator of the project.

[0076] The manage drops/plates module 620 allows the technician, accessing the web server application 130 via the user interface 150, to assign drops/plates to a project, or other group at a different hierarchical level. In one embodiment, once assigned to a project, the plate automatically inherits any scheduling that is global to the project. Alternatively, when a plate is assigned to a project the technician may choose to select a schedule for the plate that is different than any global scheduling for the project.

[0077] The manage drops/plates module 440 also allows the technician to view a master list of all plates that are present in all of the crystal farms 230 in the system. The master list may also sort the drops and plates of the system into a hierarchical configuration. For example, in one embodiment, each of the plates is assigned to a job (comprising one or more plates), each job is assigned to a target (comprising one or more jobs), and each target is assigned to a project (comprising one or more targets). Thus, the operations of the system may be controlled at any level. Hereinafter, whenever the drop, plate, target, and project levels are referred to, the use of a different hierarchical level is also anticipated. For example, while scheduling is referred to in terms of drop, plate, target, and project level schedules, any other hierarchical level may be used in scheduling. The use of categories on several hierarchical levels allows properties, such as imaging schedules, of individual drops on an entire plate to be modified, as well as the modification of the same properties on a much larger scale, such as on all plates within a particular project. The system manage drops/plates module 440 allows the assignment and re-assignment of any number or plates, or drops on a plate, to different hierarchical lines.

[0078] The project manager 440 also comprises an enter/edit project information module 630. Project information typically includes project name, owner, date started, number of plates in project, images taken, images analyzed, and any other statistics related to the project.

[0079]FIG. 6B is a screen shot of one page of the project manager 440 that displays project information. More particularly, FIG. 6B is a screen shot of the project page 640 of the Crystal Surfer user interface 150.

[0080] As illustrated in FIG. 6B, the project page 640 shows the title 690 of the current project being displayed. The project page 640 also displays a project data window 645, a watch wells window 650, a plates in project window 660, a plates pending removal window 670, and an un-assigned plates window 680. The project data, watch wells, and plates in project windows 645, 650,m and 660 are specific to the project title 690.

[0081] The project data window 645 displays various information regarding the current project, such as the project start date, status, owner, and number of plates, drops, and images currently in the project. The project data window 645 may also display the number of new images of drops in the project that have not yet been viewed by a technician. Additionally, the number of watch wells may also be shown.

[0082] The watch wells window 650 display the plate identification 652 and plate location 654 of the drop. In one embodiment, the drop locations on the plate are organized in a grid pattern so that each location has a unique row and column on the plate. For example, the first drop noted in the watch wells window 650 is located at row A and column 6 of the plate titled myPlateXI.

[0083] The plates in project window 660 displays the title assigned to each plate in the project, along with the bar code and other drop information associated with each. Additionally, the removal of plates is easily accomplished by selecting the remove button 662 next to the plate that is to be removed.

[0084] When a plate has been selected for removal from the crystal farm 230, the plate moves from the plates in project window 660 to the plates pending removal window 670. The master controller 250 communicates the listed plates pending removal to the respective crystal farm 230 that houses the plate. The local scheduler 350 at the crystal farm 230 then schedules the plate for removal. When the plate has been removed from the crystal farm 230 the master controller 250 of such and the plate is no longer displayed in the plates pending removal window 670 in the user interface 150. In an advantageous embodiment, the technician is notified by email that plates are available in a magazine for removal. The status of each plate magazine in the crystal farm 230 may be viewed on a status page in the user interface 150.

[0085] In one embodiment, the un-assigned plates window 680 allows the technician to view plates that have been added to one of the crystal farms 230 in the system. A particular plate may be assigned to the current project by selecting the add button 682 next to the plate that is to be added.

[0086] The project data window 640 illustrated in FIG. 6B also includes a close project button 695. When a project has been completed, e.g. the technician has acquired the necessary experimental data from the project, the close button 695 may be selected in order to automatically delete all of the drops listed in the watch wells window 650 and add all of the plates listed in the plates in project window 660 to the plates pending removal window 670. In this way, all plates in the project are easily marked for removal and the drops within the project are no longer watched.

[0087]FIG. 7A is a block diagram illustrating functional modules within the schedule manager 450. The schedule manager 450 allows the technician, through the user interface 150, to access and edit the imaging schedules for any projects, targets, plates, or drops at any of the crystal farms 230 in the system. Of course, the technician must have access rights, granted via the system administration module 410, to view and edit particular schedules. While the schedule manager 450 permits the assignment of an imaging schedule to every drop in every crystal farm, there is no requirement that all drops, plates, or projects be scheduled.

[0088] The add/edit schedules module 710 allows a technician to add or edit the schedules at any level, e.g. drop, plate, or project. In one embodiment, there are two types of scheduling information for each drop. In particular, the scheduling information includes the frequency that digital images should be acquired and the settings for the imaging system 330. The frequency at which digital images are to be acquired may be scheduled for any drop, plate, or project. As mentioned above, the system administration module 410 may create frequency profiles that are selectable by the technician via the add/edit schedules module 710. Thus, a technician may assign an imaging schedule to a plate simply by selecting the plate to be scheduled and a frequency profile. Additionally, the technician may select a frequency profile and then modify the profile to fit the particular needs of the plate. Alternatively, the technician may choose not to use a profile, but to create a frequency schedule on the fly by entering the scheduling criteria in the user interface 150. All of the scheduling tasks may also be added and edit at any level of the group hierarchy, such as at the plate and project levels.

[0089] The add/edit priorities module 720 allows the technician to set or edit priority levels assigned to drops, plates, or projects. In one embodiment, a crystal farm 230 comprises multiple projects, plates, and drops. Because the imaging system 330 may acquire a limited number of images per time period, there is a potential for conflict in the imaging schedule. For example, several plates may have the acquisition of new images scheduled for the same time. One solution to this problem is to install additional digital imaging devices in the imaging system 330. However, this solution may not be the most cost effective as the number of scheduling conflicts may vary significantly from one day to the next and additional imaging devices may not be used very frequently. In another embodiment, the imaging of each drop, plate, and/or project may be given a priority level. When there is a subsequent conflict in scheduling, the priority levels of the conflicting schedules are compared, and the higher priority imaging schedule is performed first. Thereafter, the lower priority imaging task may be completed, or if there exists another scheduling conflict, the priority levels of the imaging task may again be compared. For example, if two projects within a single crystal farm 230 are both scheduled to have images taken at a particular time, the project that has been assigned the higher priority will be processed first, with the lower priority project being processed after completion if there are no other higher priority tasks waiting. In addition, the order of imaging drops with conflicting schedules may be based on the length of time past the original schedule imaging time as a percentage of the imaging frequency. For example, if a first drop is scheduled every 24 hours and it is 1 hour past the scheduled time, it would be imaged before a second drop that is 3 hours late but only scheduled once per week.

[0090] In one embodiment, priorities assigned to imaging tasks are based on a priority level assigned to the technician setting up the imaging task. For example, a senior technician may have a high priority level automatically assigned to each of the projects the senior technician creates, while a college intern may have a very low priority level automatically assigned to each of the projects the college intern creates. The priority levels for a particular task may be edit by a technician having a higher priority than the priority level already assigned to the task. For example, the senior technician may upgrade the priority of the college intern's imaging task. The history of scheduling activities, including delays in imaging due to scheduling conflicts, may be recorded in the database 365 and accessed by the master controller 250.

[0091] In certain situations the priority level assigned to a particular drop may be automatically updated by the user interface 150 or the master controller 250. For example, the priority for a particular imaging task may increase as the delay for the particular task increases. This prevents low priority imaging tasks from being indefinitely delayed. Also, the priority of a drop may automatically increase by a certain amount, or to a certain level, when a crystal at the drop is indicated by a technician.

[0092]FIG. 7B is a screen shot of one page of the schedule manager 450. More particularly, FIG. 7B is a screen shot of the Scheduler page 770 of the Crystal Surfer user interface 150. The schedule manager 450 includes a data window 730, a scheduling window 740, a scheduling statistics window 750, and a current schedule calendar 760.

[0093] The data window 730 includes the drop location 732 on the plate, the plate 734 that the plate is on, the project 736 which the drop is a member, and the start date 738. The information in data window 730 may be referred to as static information because it does not change once the plate has been inserted into the crystal farm 230. The drop location 732 is preferably in a row and column format with the rows being represent by letters and columns being represented by numbers, or vice versa. Thus, the drop selected in FIG. 7B is at row A and column 6 of the plate.

[0094] The scheduling window 740 allows the technician to schedule the acquisition of images for the selected drop. The starting date 742 may be adjusted so that the schedule may vary at different time periods. For example, the starting date may first be set to 03-16-2002 and a first frequency for imaging set. The starting date may then be set to 03-14-2002, as shown in FIG. 7B, and a different frequency for imaging set. In this way, the frequency of images may change over time. As discussed above with reference to FIG. 7A, the scheduling window 740 may also allow the technician to select preset scheduling profiles.

[0095] The schedule statistics window 750 displays the history of images for the selected drop. In the embodiment of FIG. 7B, the schedule statistics window 750 includes the number of images already acquired, the number of images currently scheduled to be acquired, and the scheduled and actual dates that images were acquired. Other information, such as a thumbnail image of the latest drop image, may also be displayed on this screen.

[0096] The current schedule calendar 760 highlights the days for which images are scheduled to be acquired. The schedule calendar 760 is preferably updated in real-time so that as the technician edits different time frames of the schedule an overview of several months schedule may be viewed.

[0097]FIG. 8A is a block diagram illustrating functional modules within the plate handler module 420. The plate handler module 420 includes a remove plates module 810 and an assign plates module 820. The assign plates module 820 performs many of the same functions as the manage drops/plates module 620 in the project manager module 440. For example, the assign plates module 820 allows the technician to select plates from the unassigned plates list and assign the selected plates, or drops on the plate, to a project. The assign plates module 820 also allows the technician to view a master list of all plates that are present in all of the crystal farms 230 in the system. The master list may sort the drops and plates of the system into a hierarchical configuration and allow the technician to assign and/or re-assign any number or plates to different hierarchical lines.

[0098] The plate handler module 420 indicates the plates set for removal or assignment to the crystal farm by editing the database 365 at the crystal farm 230. When the local scheduler 360 receives data from the database 365 indicating that a plate is to be removed, the removal instructions are provided to the plate handling system 310 via the peripheral interface 350. For example, when a particular project has been completed, the user interface may access the remove plates module 810 which updates the database 365 at the crystal farm 230. Because plates at multiple crystal farms 230 may be members of a single project, the scheduling of removal of all plates belonging to a particular project may require removal of plates from multiple crystal farms 230.

[0099]FIG. 8B is a screen shot of one page of the plate handler module 420 that allows the addition and/or assignment of plates. The user interface 150 page illustrated in FIG. 8B comprises an un-assigned plates window 680, a plate assignment drop down box 830, a new plate identification entry box 840, and a create new job window 850.

[0100]FIG. 9A is a block diagram illustrating functional modules within the image module 430. In the embodiment of FIG. 9A, the image module 430 comprises a query available drops 910, viewer 920, scoring drops 930, and photograph now! 940 modules. In one embodiment, all images acquired by the crystal farms 230 are maintained on a storage medium at the crystal farms 230, such as a hard drive on crystal farm controller 340, until they are requested by the master controller 250. The images may be requested when a technician wishes to view them. However, there may be images that are never viewed by a technician so the storage of the images at a single location increases efficiency. In another embodiment, the images are uploaded to the master database at the master controller 250 as they are acquired. In this embodiment, all images are immediately available to any user interface 150 upon request. Also, this embodiment allows technicians to work with images from a crystal farm 230 that is not currently available for uploading images.

[0101] In one embodiment, when the user interface 150 accesses the image module 430, a list of the plates which the technician is assigned to are displayed on the initial screen. Similarly, a list of the most recently viewed plates may also be displayed, along with status information since the last viewing. Several other pre-selected sets of plates may also be available for viewing. Specifically, the image module 430 may allow the technician to easily view any new images acquired since the technician was last logged in. In another embodiment, image module 430 may present a list of new images that have not been viewed by any technician. In one embodiment, the list of new images may be sorted so that the oldest images would appear at the top of the list.

[0102] The image viewer 430 may also present the technician with a Hot List, or a listing of drops or plates that have been tagged as Hot. The drops or plates may be tagged by the technician, or by any other technician or administrator with sufficient access rights. For example, an administrator may create a new project and in order to insure that the desired technician, e.g. crystallographer, recognizes the new project, the project may be tagged as Hot for the particular technician.

[0103] The query module 910 allows the technician to access the master database, or any selected subset thereof. The query module 910 allows the technician to view all available plates and perform a ‘drill down’ process in order to form a list of plates to view. For example, the technician may first be presented with a master list of plates, comprising all plates at all crystal farms 230 within the system. The listing of plates may be sorted by project, plate, or drop criteria, such as length of time in a crystal farm 230, pH level, or temperature of crystal farm 230, for example. The list may also indicate which plates have new images, and allow for sorting according to time since last image acquired. The technician may then drill down through the list of plates by selecting plates from different crystal farms 230, from particular projects or jobs, or having new digital photographs within a specified time period. In this way, the technician may create a list of drops to view that is more targeted to the specific technician's needs.

[0104] In an advantageous embodiment, the query module 910 also includes a query builder that allows the technician to quickly form a list of drops that meet certain criteria. For example, the technician may form a query, using the query builder, that selects all drops that are more than 2 weeks old, have a pH of more than 2, and have had digital photographs taken within the past day. The list of drops meeting the specified criteria will then be transmitted from the query module 910 to the user interface 150. A drill down process, similar to the one discussed above, may be performed using the query builder 910. More particularly, if the list of drops from an initial query is larger than the technician had anticipated, the query may be further refined and applied to the existing result set. With reference to the above example, if the technician wishes to decrease the number of drops in the result set the query may be further limited to include only drops with a pH greater than 5. Similarly, if the technician wishes to increase the number of drops in the result set, the query may be expanded by eliminating the pH limitation. In an advantageous embodiment, queries may be stored as profile queries so that they may easily be selected and executed in the future.

[0105] The viewer module 920 allows the user interface 150 to present a number of images simultaneously as thumbnail images and/or enlarged drop images. In one embodiment, the technician selects the size and number of thumbnail images to simultaneously view. In one embodiment, the imaging system 330 acquires images of an entire plate, and allows the technician to zoom in on particular drops by accessing the image module 430. Thus, in one embodiment thumbnail images of entire plates may be viewed. In another embodiment thumbnail images are of particular drops on a plate. The images of particular drops may be acquired individually from the imaging system 330 or cropped from an image comprising more than one drop, such as an image of an entire plate.

[0106] In one embodiment, the most recent images for each drop on a particular plate, or within a result set from a query, are displayed as thumbnails in a 4 row by 6 column grid. Another set of thumbnail images (e.g. a 4×6 array) may be accessed by pressing one of the arrow keys, left, right, up, or down, thus retrieving the set of drops to the left, right, above, or below the current set.

[0107] In one embodiment, when the technician selects a thumbnail image, e.g. by clicking on the thumbnail, a drop detail window opens displaying an enlarged image of the selected drop. The large image preferably illustrates sufficient details of the drop so that the technician is able to perform any analysis that would otherwise only be available at the crystal farm 230 with the drop under a microscope. The ability to view details of any drop within the system allows a technician to remotely monitor the activity of the drops at locations remote to the crystal farm.

[0108] In addition to displaying an enlarged view of the selected drop, the drop detail window may display other information related to the drop. In one embodiment, the drop detail window includes a text entry box for adding and editing notes related to the image. The text entry box may also display notes previously entered that relate to the selected drop. In one embodiment, a time ordered sequence of thumbnail images for the same drop may be viewed along one side of the drop detail window. For example, if ten images of the selected drop have been previously acquired, thumbnail images of the ten previously acquired images may be displayed alongside the enlarged view of the most recent image. Additionally, the technician may quickly enlarge one of the older images by selecting a desired thumbnail image. When another thumbnail image is selected, the enlarged image is replaced by an enlarged view of the selected drop and the previously enlarged image is reduced to a thumbnail image on the page.

[0109] In one embodiment, the current schedule profile for the drop may also be displayed in the drop detail window. Both the history and the future schedule for imaging of the selected drop may be displayed. In addition, a link to the schedule manager 450 may also be present in the drop detail window so that the technician may easily edit the schedule for the drop.

[0110] While the above discussion of images has been specific to drop images, other embodiments of the image viewer 430 may display images of entire plates and allow zooming, adjustment of the color balance, brightness, contrast, and other effects to be performed on images.

[0111] The image viewer 430 also comprises a scoring module 930 which allows the technician, such as a crystallographer, to rate the crystallization progress of the viewed drop. The scoring system used by the technicians may be any type of system, such as A-F letter scores, 1-10 number scores, or 1-100 number scores. In one embodiment, when the technician enters a particular score for a drop, the drop may automatically become a member of an additional group. For example, if the technician scores a drop 8 or above, in a 1-10 scoring system, the drop may automatically become part of the Hot group. This may increases the visibility of the best drops to other technicians. Similarly, there may be a special group for those drops that are very poorly crystallizing. For example, if a drop has been in a crystal farm 230 for more than 3 months and the score has never been above 2, the drop may be automatically added to a Suggested Removal group. Of course, the technician must be cautious to remove a plate containing a drop in the Suggested Removal group because there may also be highly scored drops on the plate.

[0112] The Photograph Now module 940 allows the technician to acquire a new image of the selected drop on the fly. In one embodiment, when the technician selects the photograph now button from the image viewer 430, an image of the selected drop is acquired as soon as possible. Thus, the current schedule of the crystal farm 230 that houses the selected drop may be interrupted. In one embodiment, the access rights of the technician requesting the Photograph Now are analyzed in order to determine if the schedule of the crystal farm 230 should be interrupted, or if the photograph of the selected drop should be delayed until a later time. In one embodiment, the Photograph Now module 940 allows the technician to adjust and control other image settings, such as aperture, zoom, and lens position. Additionally, using the Photograph Now module 940, the technician may acquire additional images of a selected drop. Thus, if a technician is not satisfied with an image of a drop, for whatever reason, the technician may select Photograph Now, adjust the image settings, and acquire one or more additional images. In this way, the technician, with the appropriate access rights, may interrupt scheduled tasks and manually control the operation of one or more crystal farms. In one embodiment, the image settings that are manually selected by the technician using the Photograph Now module 940 may be saved and used in the acquisition of future images.

[0113] In one embodiment, when Photograph Now is selected, the technician may receive a new image of the selected drop within a few minutes. This delay is attributable to the interruption of the current schedule of the crystal farm 230 and the need to locate and retrieve the plate with the selected drop. This delay may be shorter, or longer, depending on the situation of the crystal farm 230. For example, if the plate containing the drop selected for a Photograph Now is currently at the imaging device, the new image may be acquired, and transmitted to the technician, very rapidly.

[0114]FIG. 9B is a screen shot of one page of the image viewer 430 that allows querying of images available for scoring. More particularly, FIG. 9B is a screen shot of the Scoring Setup page 980 of the Crystal Surfer user interface 150. The scoring setup page 980 comprises a project selection window 982, a plates selected window 984, and a query builder 990.

[0115] The project selection window 982 allows the technician to select plates in one or more projects for scoring. The selection of a particular project in the project selection window 982 may significantly reduce the number of images for scoring.

[0116] The plates selected window 984 lists all of the plates that will be queried. This particular user interface 150 allows the technician to narrow the result set by narrowing the plates to be searched by project. More specifically, the user interface includes a choose project window 982 that allows the technician to select one or more projects to query. The plates selected window 984 then displays the plates in the selected project or projects.

[0117] The query builder 990 allows the technician to further narrow the plates to be scored. As discussed above with reference to the query available drops module 910, the available drops may be queried based on conditions, such as pH or temperature, as well as the length of time since an image for the drop has been viewed. When the query conditions have been set, the technician selects the start scoring button 992, which executes the query and displays a list of plates that match the criteria. The images of the plates may then be viewed and scored according to the methods described above with reference to the thumbnail viewer 920 and scoring 930 modules.

[0118]FIG. 9C is a screen shot of one page of the image viewer 430 that allows viewing of enlarged images on drops. More particularly, FIG. 9B is a screen shot of the Well Image interface of the Crystal Surfer user interface 150. The page illustrated in FIG. 9B includes thumbnail images 950, an enlarged image 955, an image data window 960, a drop data window 965, an imaging schedule window 970, and an image notes text entry box 975.

[0119] The thumbnail images 950 may be any set of thumbnail images generated by the query module 910. The result set generated by the query module 910 may be those drops that the technician wishes to score. Thus, the thumbnail images 950 may show images of drops to be scored. Alternatively, the thumbnail images may be historical images of the selected drop, i.e. images of the same drop taken at different times, or images of the drops on a selected plate. In the embodiment of FIG. 9B, a selected drop 950A is indicated by a dark outline surrounding the thumbnail image. All image and drop data displayed on the page is for the selected drop 950A.

[0120] The enlarged image 955 is an enlarged image of the selected drop 950A. As noted above, the size and resolution of the drop is set so that the technician is able to perform all analysis on the drop via the user interface 140, without needing to actually view the drop under a microscope.

[0121] The image data window 960 shows the date, time, image number for the selected drop, and filename of the current image. The drop data window 965 shows the drop location 732 on the plate, the plate 734 that the drop is on, and the project 736 which the drop is a member. The imaging schedule window shows the current schedule for the selected drop. The image notes text entry box 975 displays any notes related to the selected drop that have been previously entered and allows the technician to enter additional notes.

[0122]FIG. 9D is a screen shot of one page of another embodiment of the image module 430. As illustrated in FIG. 9D, the image module 430 of the web server application 130 transmits thumbnails of drops to be scored 1010 and historical images of the selected drop 1020 to the user interface 150. The user interface 150 also includes a score card 1030, scoring block 1040, and link to view a movie 1050 of the current drop, as well as an enlarged image 955 of the selected drop. Thus, the image module 430 page illustrated in FIG. 9D provides a well organized atmosphere for quickly viewing and scoring images.

[0123] The to be scored thumbnails 1010 may be a result set of a query performed by the technician, or alternatively, may be an automatically generated list of drop images that have not been scored. In one embodiment, the technician may enter a desired number of images to score and the image module 430 will automatically generate a list of the desired number of drops. The selected thumbnail image 1012 may have a darkened border to indicate which drop is currently the enlarged image 955. The historical images of the selected drop 1020 includes several images of the selected drop. Each of these images may also be enlarged by simply clicking on a drop thumbnail. The images shown in the historical images of selection 1020 may be the most recent images of the drop or images of the drop from technician selected time frames.

[0124] The scoring block 1040 allows the technician to easily score the selected drop by clicking on one of the numbers 1-10. As discussed above, any other scoring scheme may also be implemented. The display of the historical images of selection 1020 allow the technician to track the crystallization process of the selected drop by viewing historical images of the drop. The score card 1030 lists the selected score for the selected drop and may also display the type of drop and other information about the drop. After the selected drop has been scored the technician may select another drop to score by clicking on one of the thumbnail images of drops to be scored 1010. Alternatively, in an advantageous embodiment, when the technician clicks on a score for the current drop, an image for the next drop to be scored automatically becomes the enlarged image 955 and is ready for scoring. Using this one-click scoring process, the technician may quickly and easily move through the images to be scored. When another of the drops to be scored 1010 is selected, either by the technician clicking on the thumbnail or automatically in a one-click scoring process, the enlarged image 955 is changed to the selected drop and the historical images of selection 1020 are automatically updated to images of the selected drop.

[0125] In one embodiment, the image module 430 also provides the option of viewing a movie of a particular drop. In particular, the user interface 150 displays a movie button 1050 that begins a movie of the currently selected drop. The movie may include all of the historical images of the selected drop and may be viewed in any size. The technician may also control the speed of the movie on a frame-by-frame basis.

[0126]FIG. 10A is a block diagram illustrating functional modules within the result analyzer 460. The result analyzer includes a comparison charting module 1010, a query builder 1020, and a design of experiments module 1030.

[0127] The query builder 1020 is similar to the query builder that is part of the query module 910. In an advantageous embodiment, the query builder 1020 also allows the technician to query the drops based on their assigned scores (the “results”). The results query may be based on the latest score assigned to each drop or the average of scores assigned to each drop. The query builder 1020 also allows the query to select results based on the pH of the drop, the temperature of the crystal farm 230, or any other environmental condition. The query builder 1020 may further limit the search by applying the query to only those results in a selected project.

[0128] The comparison charting module 1010 allows the technician to create charts illustrating characteristics of drops in the result set produced by the query builder 1020. The charting module 1010 may produce charts of any type, such as bar, line, or pie charts, using any criteria available. The charts produced by the charting module 1010 are structured so that the technician may determine the characteristics which have the greatest effect on the crystallization process. In this way, the technician may design additional experiments based on the results illustrated in comparison charts.

[0129]FIG. 10B is a screen shot of one page of an exemplary query builder 1070, a charting module 1060, and a chart 1090. The configuration of the user interface 150 page illustrated in FIG. 10B advantageously allows the technician to query all drops at crystal farms, set-up a chart for displaying the results, and view the chart on a single page. Thus, the technician may quickly draw conclusions based on the charted information and modify the existing criteria, or select different criteria, for additional charting and analysis.

[0130] Query information may be entered into one of many selection boxes 1071 depending on the type of information the technician wishes to query. In FIG. 10B, four selection boxes 1071 are available in the query builder 1070, namely, a project management selection box 1072, well conditions selection box 1074, camera settings selection box 1076, and image results selection box 1078. The technician may chooses to build a query using any of the types of query information available. For example, in FIG. 10B, if the technician wishes to enter query information in a particular selection box, the technician may select the Custom radial button 1079 next to the appropriate selection box 1071.

[0131] Each of the selection boxes 1071 allows the technician to build a query based on multiple criteria related to the drops or drop images. For example, one or more plates, jobs, targets, or projects may be selected in the project management selection box 1072. The pH, drop name, identification, or other drop/well conditions may be selected in the well condition selection box 1074. The zoom level, polarizer type, and any other adjustable camera settings may be selected in the camera settings selection box 1076. A scoring and/or grade for the drops may be selected in the image results selection box 1078. In addition, the query builder 1070 may query any other information related to the drops.

[0132] The query term window 1080 displays the available criteria for querying, a boolean operator, and a value. The technician selects any of the criteria available for querying and an upper or lower value, or range of values, for the selected criteria in order to set a query criteria.

[0133] The charting module 1060 allows the technician to enter information for the creation of a chart 1090 based on the results of the query by the query builder 1070. In one embodiment, the results from the execution of the query by the query builder 1070 may be used directly by the charting module 1060 in creating a chart. Alternatively, the technician may select to export the results of the query to a file that may be used by another software application in analyzing the results. In the embodiment of FIG. 10B, the charting module 1060 includes entry windows for several criteria, such as X axis category and data series to be charted, that will be used in the chart 1090. Additionally, charting module 1060 includes a list of the result sets 1062 created by multiple queries. The result sets 1062 can be selected and displayed together on a single chart 1090. For example, the chart 1090 if FIG. 10B includes 3 bars indicative of result sets (‘series’) from queries where the query terms were identical except for the pH range. In this type of usage, the user can analyze the difference in the ‘time to crystals’ for each of the 3 different series.

[0134] The design of experiments module 1030 (FIG. 10A) provides a statistics-based method for determining the relationship between factors affecting a process, e.g. the crystallization process, and the results of that process. More specifically, the design of experiments module 1030 uses statistical analysis to determine which criteria (e.g. temperature and pH) are most important in obtaining a fully crystallized drop (e.g. where the crystallization level is indicated by the assigned score). In general, properly designed and executed experiments will generate more-precise data while using substantially fewer experimental runs than alternative approaches. Thus, the use of a statistical design of experiments module 1030 may increase the efficiency of the experimental process and allow more rapid discovery of techniques that accelerate the crystallization process.

[0135]FIG. 11 is a block diagram illustrating one embodiment of a messaging system for communicating instructions and data between devices coupled to a server. In the embodiment of FIG. 11, a lab 110 is coupled to a server 1100 configured to communicate messages between devices. A server according to the described method has been developed by Discovery Partners, Inc., and is currently known as a LabLink server. Any reference herein to either a messaging server or the LabLink server should be treated as a reference to a server configured to perform the messaging functions described below. Messages in any format, such as, for example, image, text, or binary data, XML code, or Java objects, may be communicated between devices coupled to the LabLink server 1100.

[0136] In one embodiment the LabLink server 1100 (or messaging server 1100) is a portion of the master controller 250 discussed above. In another embodiment, the LabLink server 1100 is a stand alone server that may be disposed at a location remote to the master controller 250. In yet another embodiment, the LabLink server 1100 is a stand alone server in a system that does not include a master controller 250. In one embodiment, any device that has the proper credentials, such as user ID and password, may transmit and receive messages via the LabLink server 1100. In an advantageous embodiment, the LabLink server 1100 operates a Java Message Service (JMS) application program interface, the messages are transmitted in a JMS compliant format, and the payload of each message includes an XML document. In another embodiment, Microsoft Message Queuing (MSMQ) technology is employed to allow devices to asynchronously communicate via the LabLink server 1100. Additionally, the use of other messaging formats currently know in the art, or later developed, are expressly contemplated.

[0137] As illustrated in FIG. 11, the LabLink server 1100 is in communication with a technician PC 140. Additionally, a database 1120 and other lab instruments 1110 may be in communication with the LabLink server 1100. Accordingly, the technician PC 140, database 1120, lab instruments 1110, and lab 110 may each transmit and receive messages from other devices in communication with the LabLink server 1100. For example, the Lab 110 may transmit and receive messages from the Technician PC 140, the database 1120, and/or the lab instruments 1110 via the LabLink server 1100. In one embodiment, for example, the database 1120 stores information regarding the properties of various proteins that may be used in the crystallization process. In another embodiment, the remote database 1120 stores experimental information acquired from one or more labs 110. The lab instruments 1110 may include any type of instruments, such as liquid handlers, for example, that are coupled to a computing system and able to acquire and transmit data. In an advantageous embodiment, the LabLink server 1100 includes logic for asynchronously delivering messages or other data based on several criteria, such as user preferences, availability of a destination device, and the occurrence of an event, for example. The asynchronous operation of the LabLink server 1100 is discussed in further detail below.

[0138] In a crystal farm environment, such as illustrated in FIG. 2, the LabLink server 1100 (not shown in FIG. 2) may be used by customers to process event data from the Crystal Farms 230 in a custom way. For example, a customer may update their own remote database 1120 each time a new image is acquired at a crystal farm 230. In a second example, after scoring an image, by using the interface illustrated in FIG. 9d, for example, a message including the scoring data may be sent to the LabLink server 1100. The LabLink server 1100 may then execute a process that transmits and stores the scoring data to a remote database 1120, such as an Oracle database. In another example, a lab instrument 1110, such as a liquid handling device, may send a message to the LabLink server 1100 indicating that the processing of a micro plate has been completed and the plate is ready to be loaded into a crystal farm 230. The lab instrument 1110 may further transmit information regarding the samples on the plate so that the technician is not required to enter the information or otherwise acquire the plate information. In response to the received message, the LabLink server 1100 may execute a process that generates and sends another message to the crystal farm 230 notifying the crystal farm 230 that the plate is ready.

[0139] In the embodiment of FIG. 11, the lab 110 may receive data, such as conditions for a particular experiment, from one or more of the various devices that are in communication with the LabLink server 1100. For example, experimental conditions may be transmitted from the technician PC 140, one or more remote database 1120, and/or one or more remote lab instruments 1110. The communication of these various devices via the LabLink server 1100 may allow the most recent and complete data to be shared among all devices and may increase the efficiency of the system. In another example, when a new plate is loaded into the lab 110, information regarding proteins used in the crystallization process may be requested from a database 1120, such as a database maintained by a drug company.

[0140] In one embodiment, each crystal farm 230 has no knowledge of how the ‘event data’ is used, and its only contract is to provide the event messages to the LabLink server 1100 when they occur. In one embodiment, all events are reported to the LabLink server 1100 while less than all of the messages will have an associated process that will be performed by the LabLink server 1100. In this embodiment, the messages for which there is no associated process may be stored in the message cache 1104 for a predetermined length of time or until a user accesses and/or instructs that the message be remove from the message cache 104. In another embodiment, the devices coupled to the LabLink server 1100, such as a lab 110 or a crystal farm 230, selectively transmit event messages so that the number of transmitted messages actually used by the LabLink server 1100 is increased, thus decreasing network congestion. In one embodiment, the LabLink server 1100 includes a message manager 1106 that listens for incoming messages to the LabLink server 1100. In one embodiment, the message manager 1106 includes a look up table (LUT) 1102 that stores one or more criteria lists, where each of the criteria are associated with one or more processes to be performed. In one embodiment, the criteria is a message type. In other embodiments, the criteria may be a message source, message destination, and/or type of message, for example. One or more processes may be associated with particular criteria, such as a message type, so that the message manager 1106 may access the LUT 1102 to determine which processes are associated with each criteria. A process, as used herein, is a piece of software that performs an operation on data. Processes may perform operations on data that is transmitted with a message (e.g., the payload of the message), data stored at the LabLink server 1100, and/or data stored on an external server or computing device. One type of process may be the reformatting of payload data (in the received message) according to preferences for a particular destination device. For example, the Lab 110 may be configured to transmit messages every hour including images and experimental data acquired during the last hour. When the message is received by the LabLink server 1100, the message manager 1106 accesses LUT 1102 and determines that a process is associated with the hourly update messages (e.g. type of message). The message manager 1106 may also determine that an additional or alternative process is to be executed based on the message source (e.g., Lab 110). In the above example, the process (associated with the type of message and/or message source criteria) may include code that adjusts the formatting of the images and experimental data. In one embodiment, the process is created according to preferences of the technician PC 140. The process may also include code that transmits the reformatted message to predetermined devices, such as the technician PC 140. In parallel with the execution of the above described exemplary process, another process may be performed in response to the received hourly update of image and experimental data. In fact, criteria for many different processes may be satisfied by the receipt of a single message, thus triggering the execution of multiple processes. For example, a number of technician PC's 140 may be coupled to the LabLink server 1100, with each technician PC 140 requiring the same data in different formats. According to the above described method, the LUT 1102 may contain a process for reformatting the same data to accommodate each technician PC 140. In this way, the messaging system allows message data (or other data) in one format to be converted to multiple other formats for easy integration with destination devices. In one embodiment, a message transmitted by one device, such as the lab 110, can include a return address (that may be temporarily cached by the LabLink server 1100) used to establish a reply channel for the process, thus bypassing the message manager 1106.

[0141] In one embodiment, the message manager 1106 includes one or more remote listener programs configured to communicate with remote devices to determine if new messages are present at the remote devices. In this embodiment, the remote devices include a cache, or other memory, that stores messages local to the remote device. The remote listener program accesses the cache at the remote device and determines if new messages are present. If new messages are present, the remote listener may read the message from the caches or request that a copy of the message be transmitted to the LabLink server 1100.

[0142] In the embodiment of 1100, the LabLink server 1100 also includes a message cache 1104. The message cache 1104, which may be any type of storage device, allows the transmission of message between devices to occur asynchronously. The message cache 1104 stores messages received from devices and messages ready for transmission to devices. In an advantageous embodiment, the message cache 1104 is organized into multiple caches which store messages waiting to be transmitted to respective devices. In this way, a device may receive all messages addressed to the particular device by accessing a portion of the message cache 1104. In one embodiment, messages are stored in the message cache 1104 until a process is executed that clears the message from the message cache 1104. With reference to the above example, if the process executed by the LabLink server 1100 determines that the technician PC 140 is not coupled to the LabLink server 1100 when the reformatted message is prepared to be sent, the message cache 1104 will store the reformatted messaged until the technician PC is online and ready to receive the message. In another embodiment, the reformatted message is stored in the message cache 1104 until the destination device requests transmission of messages addressed to the destination device. Thus, the messaging system does not require communicating devices to be concurrently online and available for communications. Indeed, the messaging system increases the rate of successful message delivery by allowing messages to be stored indefinitely on the LabLink server 1100 and later transmitted to the destination device. In one embodiment, the message cache 1104 removes received messages (that have not been processed) and transmit messaged (messages that are forwarded by an executed process or data generated in a message by an executed process) from the cache 1104 after each message has been stored on the cache 1104 for a predetermined length of time.

[0143] The JMS devices that communicate via the LabLink server 1100 may also communicate payload data, such as XML documents, for example, directly to one another without manipulation of the payload data by any executed process. In one embodiment, the LabLink server 1100 stores data indicating which communications do not require any processing by processes listed in the LUT 1102. For example, a technician PC may be set up to receive payload data in the format that is transmitted from a remote lab 110. Thus, the messages sent from the remote lab 110 to the technician PC may more quickly reach the message cache 1104 for the technician PC by skipping the execution of any processes on the message. Alternatively, in another embodiment, the destination address included in a message is formatted so that the LabLink Server 1100 determines that the payload data is to be forwarded directly to the message cache 1104 for the technician PC, rather than being manipulated by any processes. In doing so, the LabLink server 1100 is configured to establish one ore more custom message caches for messaging between two or more devices that are aware of each other and are each configured independently to use the caches. FIG. 12 is a flow chart illustrating a method for transmitting messages among devices via the LabLink server 1100. In block 1210, a message is transmitted to the LabLink server 1100. In one embodiment, a message identifies a destination device and includes a payload data portion. In one embodiment, the payload portion of the message may include experimental data, commands to be executed by a remote lab 110, or control data for configuring the LabLink server 1100. Experimental data may include, for example, images of samples, atmospheric conditions of a lab, characteristics (temperature, pH, volume, size, etc.) of a sample or object, and status of the overall experiment. Commands to be executed by a remote lab 110 may include any command that could be given to the remote lab 110 by an authenticated computing device connected directly to the remote lab 110. For example, a message may include commands to set up a new experiment or a message may include commands for the remote lab 110 to acquire data regarding a particular sample and send the results to an identified destination.

[0144] In block 1220 the LabLink server 1100 determines if the receipt of the message has triggered criteria for one or more processes. In one embodiment, the message manager accesses a LUT 1102 to determine which processes are to be executed in view of the received message. As described above, in one embodiment each process operates independently and may be triggered according to any measurable criteria. Accordingly, multiple processes may be triggered by a single event, such as the receipt of a message. Likewise, no processes may be triggered by certain events, or series of events.

[0145] In block 1230 the LabLink server 1100 executes the processes that were identified in block 1220. In one embodiment, multiple processes are executed in parallel. In another embodiment, the LabLink server 1100 executes processes sequentially. The LabLink server may assign priorities, based on any criteria, such as the source or destination device, to processes in order to determine the order of execution of the processes.

[0146] Specific parts, shapes, materials, functions and modules have been set forth, herein. However, a skilled technologist will realize that there are many ways to fabricate the system of the present invention, and that there are many parts, components, modules or functions that may be substituted for those listed above. While the above detailed description has shown, described, and pointed out the fundamental novel features of the invention as applied to various embodiments, it will be understood that various omissions and substitutions and changes in the form and details of the components illustrated may be made by those skilled in the art, without departing from the spirit or essential characteristics of the invention. 

What is claimed is:
 1. A system for controlling the operation of at least one remote crystallography laboratory, the system comprising: a user interface coupled to an input device; one or more crystallography laboratories located remote from said user interface, the laboratories each housing a plurality of test samples and including an imaging device and automated machinery configured to retrieve a specific sample and place the sample in a position to be photographed by the imaging device, wherein the automated machinery and imaging devices disposed at the one or more crystallography laboratories are controlled by computers respectively located at each of the plurality of laboratories; and a controller located remote from said user interface and said one or more crystallography laboratories, the controller being configured to receive scheduling information from the user interface indicating one or more samples to be photographed and one or more times to acquire said photographs of said samples, wherein said controller communicates the received scheduling information to each laboratory housing at least one of the test samples to be photographed.
 2. The system of claim 1, wherein the scheduling information further comprises a number of photographs of each test sample to be photographed and settings for the imaging devices at each of the laboratories housing at least one of the test samples to be photographed.
 3. A controller coupled to one or more user interfaces and one or more crystallography laboratories, the controller being configured to control automated processes at the one or more crystallography laboratories, the controller comprising: a schedule manager for receiving schedule information from the at least one of the user interfaces and updating a database at one or more of the crystallography laboratories, wherein each of the crystallography laboratories comprises a local scheduler configured to access the database and retrieve the updates schedule information; and an imaging system for retrieving one or more images stored at a database at one or more of the crystallography laboratories and transmitting the one or more images to a user interface.
 4. A server configured to route scheduling data from a plurality of user interfaces to one or more remote laboratories, the server comprising: a list of remote laboratories and the test samples housed in each of said remote laboratories; an input port for receiving scheduling information from at least one of said plurality of user interfaces, wherein the scheduling information comprises information specifying a plurality of test samples to be photographed; a schedule manager configured to determine which of said remote laboratories house at least one of the plurality of test samples; and an output device configured to transmit said scheduling information to each of said remote laboratories determined to house at least one of the plurality of test samples.
 5. The server of claim 4, wherein the scheduling information further comprises information specifying one or more times to photograph said plurality of test samples.
 6. The server of claim 4, wherein the scheduling information further comprises information specifying settings for an imaging device at one of the remote laboratories.
 7. The server of claim 4, wherein the scheduling information further indicates a number of images to acquire at a specified time.
 8. A computing device for facilitating communication of messages among a plurality of devices, wherein the plurality of devices comprises one or more devices in a laboratory and one or more devices external to the laboratory, wherein each of the plurality of devices is in communication with the computing device, the computing device comprising: a receive module configured to receive messages from any of the plurality of devices; a transmit module configured to transmit messages to any of the plurality of devices; a storage module configured to store a received message; and a processing module configured to process said received message according to predefined preferences of a determined destination device; the processing module generates a transmit message and provides instructions to the transmit module to transmit the transmit message to the destination device.
 9. The computing device of claim 8, wherein the computing device executes a Java Message Service (JMS) application program interface and the received message is JMS compliant.
 10. The computing device of claim 8, wherein the received message is stored in the storage module until the computing device determines that the destination device is in communication with the computing device.
 11. A method for asynchronously processing and communicating data between a plurality of devices, the method comprising: receiving a message comprising a payload; determining a type of the message; determining one or more processes to be completed based on the determined type of the message; generating one or more transmit messages by executing said determined one or more processes; transmitting the one or more transmit messages to respective one or more destination devices.
 12. The method of claim 11, wherein the type of the message is one of a command message, a experiment result message, or a management message.
 13. The method of claim 11, wherein one of the processes determines at least one of the one or more destination devices.
 14. The method of claim 11, wherein the one or more processes are each software programs developed to manipulate the payload according to parameters of the destination device.
 15. The method of claim 14, wherein said generating the transmit message comprises processing at least one of stored data and the payload.
 16. A method for asynchronously processing and communicating data between a plurality of devices, the method comprising: transmitting a message comprising a transaction type and transaction data; receiving the message at a server; retrieving from a table stored on the server a process, wherein the process is selected based at least partly on the transaction type; generating one or more transmit message by processing the transaction data according to the process; addressing the one or more transmit message for delivery to a destination device; storing the transmit message on the server for later retrieval by the destination device if the destination device is not currently available to receive the transmit message.
 17. The method of claim 16, wherein the process determines the destination device.
 18. The method of claim 16, wherein one or more of the transmit messages is transmitted to more than one destination device.
 19. The method of claim 16, wherein a plurality of processes are retrieved and processed.
 20. The method of claim 16, further comprising: receiving a request for the transmit message; and transmitting the transmit message to the destination device.
 21. The method of claim 20, further comprising: generating a response message at the destination device; receiving the response message at the server; and storing the response message on the server for later retrieval by one of the plurality of devices.
 22. The method of claim 16, wherein the plurality of devices includes two or more of a technician PC, a database, a laboratory instrument, and a laboratory controller.
 23. A method for asynchronously processing and communicating data between a plurality of devices, the method comprising: transmitting from a transmit device a message comprising transaction data; receiving the message at a server; retrieving from a table stored on the server a process, wherein the process is selected based at least partly on one or more characteristics of the transmit device; generating one or more transmit message by processing the transaction data according to the process; addressing the one or more transmit message for delivery to a destination device; storing the one or more transmit message on the server for later retrieval by the destination device if the destination device is not currently available to receive the one or more transmit message.
 24. The method of claim 23, wherein the one or more characteristics includes a format for the one or more transmit message.
 25. The method of claim 23, wherein another process determines the destination device.
 26. A method for asynchronously processing and communicating data between a plurality of devices, the method comprising: transmitting from a transmit device a message comprising a transaction type and transaction data; receiving the message at a server; retrieving from a table stored on the server a process, wherein the process is selected based at least partly on a characteristic of the transmit device and a characteristic of a destination device; generating one or more transmit message by processing the transaction data according to the process; addressing the one or more transmit messages for delivery to the destination device; storing the one or more transmit message on the server for later retrieval by the destination device if the destination device is not currently available to receive the one or more transmit message.
 27. The method of claim 26, wherein another process determines the destination device.
 28. A system for controlling the operation of at least one remote crystallography laboratory, the system comprising: a user interface coupled to an input device; a crystallography laboratory located remote from said user interface, the crystallography laboratory housing a plurality of test samples and including an imaging device and automated machinery configured to retrieve a specific sample and place the sample in a position to be photographed by the imaging device, wherein the automated machinery and imaging device are controlled by a computing device located at the crystallography laboratory; a controller located remote from said user interface and said crystallography laboratory, the controller being configured to receive scheduling information from the user interface indicating one or more samples to be photographed and one or more times to acquire said photographs of said samples to be photographed, wherein said controller communicates the received scheduling information to the crystallography laboratory.
 29. The system of claim 28, further comprising another crystallography laboratory in communication with the controller, wherein a portion of the samples to be photographed are located at the crystallography laboratory and another portion of the samples to be photographed are located at the another crystallography laboratory; the controller being configured to communicate the scheduling information to the crystallography laboratory and the another crystallography laboratory.
 30. A controller coupled to a plurality of user interfaces and one or more crystallography laboratories, the controller being configured to control automated processes at the one or more crystallography laboratories, the controller comprising: a schedule manager for receiving schedule information from the plurality of user interfaces and updating a database , wherein each of the crystallography laboratories comprises a local scheduler configured to access the database and retrieve the updates schedule information; an image module for retrieving one or more images stored at an image database at one or more of the plurality of laboratories and transmitting the one or more images to a user interface.
 31. The system of claim 30, wherein the database is stored at one or more of the crystallography laboratories
 32. The system of claim 30, wherein the scheduling information further comprises a number of photographs of each test sample to be photographed and settings for the imaging devices at each of the laboratories housing at least one of the test samples to be photographed.
 33. A server configured to route scheduling data from a plurality of computing devices to a plurality of remote laboratories, the server comprising: a storage medium storing a list of remote laboratories and an indicator of the test samples housed in each of said remote laboratories; an input port for receiving scheduling information from at least one of said plurality of computing devices, wherein scheduling information specifies a plurality of test samples to be photographed and one or more times to photograph said plurality of test samples; a schedule manager configured to determine which of said remote laboratories house test samples specified in the scheduling information; and an output device configured to transmit said scheduling information to said remote laboratories determined to house test samples included in said scheduling information. 